home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 19
/
Amiga Format CD19 (1997-10-02)(Future Publishing)(GB)(Track 1 of 5)[!][issue 1997-11].iso
/
-seriously_amiga-
/
shareware
/
sound
/
aprosys
/
aprosys.doc
< prev
next >
Wrap
Text File
|
1997-08-18
|
21KB
|
677 lines
Format:
- form-feed before a main heading
- two spaces after a main heading
- main heading printed with enlarged horizontal
- two spaces before sub-heading
- one space after sub-heading
- Title page
- Copyright
- Persons (Remember file requester)
wIntroduction
w
- structured way to make music
- user interface called Sios
wThe User Interface (Sios)
w
Load in the program. You will now see a screen full of numbers
and strange labels. Press the right mouse button and move the
pointer to the Project-menu. Then select "Read" and release
the button. After the directory has loaded, select the file
called "Learning". You have now loaded a song into your
computer.
At the upper right of the screen there are 5 gadgets. The one
to the far left is used to start and stop the music. Try it!
The 4 other gadgets is used to swap between 4 different
editors.
Preferences - this has nothing to do with the music
itself.
Sequence Editor - here lies the composition.
Sound Editor - here are all the sounds used in the
composition.
Waveform Generator - this part handles the samples.
These editors are each divided into different tables. All the
tables have a heading with shortcuts for what the different
fields in the table contain. Most of the tables also have index
numbers at the left, which is used when you refer to a position
in the table. You will see that some of the indexes count {00,
01, 02, 03...} while others count {00, 04, 08, 0C...}. In the
last case you have to divide the table futher up youself. Here
comes an example:
Arpeggio
00 c-0 c#1 c-0 c-0 "c#1" is in position 01
04 c-0 c-0 g-0 c-0 "g-0" is in position 04 + 02 = 06
08
You may move the mouse-pointer inside any of the tables and
press the left mouse button to move the cursor. The cursor may
also be moved within a table with the arrow-keys.
When you start the editor, all tables contains only 1 line. If
you move the cursor to this line and press RETURN, the line
will be copied, so that you get 2 lines. To delete a line
press BACKSPACE.
Take a look at the text at the bottom of the screen. This line
always gives you information on what to put in the field where
the cursor is. Move the cursor to the first field of the
command-table. The info-line will show you:
<S>top, <P>lay, <L>oop ...
This means that you can press "S" for "Stop", "P" for "Play"
and so on. If you select "Play" there will appear two extra
fields in the table, and if you press "F", there will appair a
word instead of numbers. This is because the last fields have
different meanings when you change the value of the first
field.
wThe Sequence Editor
w
When you enter the program, the sequence editor will appear on
the screen. This consists of four tables:
Commands - the thin table at the upper left
Mensures - the wide table at the bottom
Notes - in the middle of the screen
Arpeggio - at the top of the screen
The note table contains information on what notes to play, what
sounds to use, and some other things. A part of this table
represents the notes in a mensure.
In the mensure-table you can combine one part of the note-table
for each voice. One line of this table represents one mensure
in the finished composition. (It is sometimes more practical
to let it represent multiple mensures.) In this table, you may
also choose to rise all the notes in the mensure, and you
always have to specify a volume for each voice.
The command-table contains a simple program which tells what
order the mensures are going to be be played in. There are
also some other features here.
Figur 1.1.1: The connection between commands, mensures and
notes.
C o m m a n d s
|
|
M e n s u r e s In each mensure you spesify
| | | | 1 part of the note-table for
| | | | each voice.
N o t e s
Each note in the note-table have the following format:
C-1 s00v20p00
1 2 3 4
Move the cusor to field 2. Then press the key above TAB. The
letter before the numbers will toggle between "s" and "w", and
the info-line will toggle between "Sound" and "Waveform". This
is because you can choose between modifying two different
settings. But you can not modify both at the same note. Field
3 and 4 uses the same technique. In this way you can modify 6
settings instead of 3.
Now you can move the cursor to the mensure-table. The first two
fields in this table have the info-texts "Speed" and "Size of
block". After these comes 4 columns, all starting with a
note-field. Each column controls ist own voice. I will now give
a closer description of the fields in the two tables.
"zNote
"z
At the note-field you can use the keys from "z" to "/" and from
"q" to "]" for the basic scale, and use "a" to ";" and "1" to
"\" for halve notes. If you press SPACE, "---" will appair.
This marks a rest.
Every note is related to a value. Here is the list for the
first two octaves:
Note label Value Note label Value
C-0 0 C-1 12
C#0 1 C#1 13
D-0 2 D-1 14
D#0 3 D#1 15
E-0 4 E-1 16
F-0 5 F-1 17
F#0 6 F#1 18
G-0 7 G-1 19
G#0 8 G#1 20
A-0 9 A-1 21
A#0 10 A#1 22
B-0 11 B-1 23
When the AudioDriver shall determine what note to play, it
first reads the note you have specified in the mensure-table.
Then it adds the value of the note in the note-table. If you
have spesified D-0 in the note-table, and E-1 in the mensure
table, the result will be F#1.
2 + 16 = 18
D-0 E-1 F#1
When the note in the mensure-table is C-2, all notes in that
mensure will be rised 2 octaves.
If you hold SHIFT when you type a note in the note-table, the
note will display in lower-case. If you continue an upper-case
note with lower-case notes, you signal that the same note
continues until a new upper-case note or a "---" is reached.
Here is an example:
D-0 d-0 d-0 d-0 --- --- E-0 e-0 f-0 f-0
First comes a D with the length of 4. Then comes a rest of 2.
The last note has the length of 4, and it is an E at the first
half and an F at the second half.
There are two term that you will need later:
-
key-on
is from a upper-case note to a "---"
-
key-off
is from a "---" to an upper-case note
"zSound
"z
The sound which will be played is the sound in the note-table
plus the sound in the mensure-table. Therefore, if you are not
going to change the sound within a mensure, set the sound in
the note-table to 00, and use only the sound-setting in the
mensure-table.
"zVolume
"z
The volume in the sound-table will be multiplied with the
volume in the mensure-table. That means you have to write a
non-zero value in both tables, else the volume will be zero.
"zArpeggio
"z
Arpeggio is a way to make chords on a single voice. This is
done by rapidly shifting between the notes which normally
should be played simultaneously. If you for example want to
make a dur-chord and a mol-chord, find a free place in the
arpeggio-table. If you start on the first line, the table
should show like this:
Arpeggio
00 C-0 E-0 G-0 00 The last 00 means "jump to 00"
04 C-0 D#0 G-0 04 and 04 means "jump to 04".
08
...
The dur-chord starts at posistion 00 in the table, and it is
represented as C-dur. The mol-chord is represented as a C-mol,
and starts at position 04.
To enter the numbers in position 03 and 07, place the cursor on
the field and press BACKQUOTE (the key above the TAB-key).
Press BACKQUOTE another time if you want to enter a note in the
field again.
To select one of the arpeggio-chords, you must select arpeggio
in the note table by pressing BACKQUOTE in the last field. The
starting position in the table will be the value in this field
plus the value in the arpeggio field in the mensure-table.
Let's say an A-2 is played with our mol-chord in position 04.
The AudioDriver will compute the notes in the following way:
Position in the Note in Note calculation Note
arpeggio-table arpeggio played
04 c-0 A-2 + C-0 = A-2 A-2
05 d#0 A-2 + D#0 = C-2 C-2
06 g-0 A-2 + G-0 = E-2 E-2
07 00 Jump to position 00
The resulting sequence of notes is A-2, C-2, E-2, A-2, C-2...
The shifting occurs on each
cycle
, and there are usually about
5 cycles between each note in the note-table.
"zSpeed
"z
There are three places you can control the speed:
- By using the command "Dlay" in the command-table
- In the first field of the mensure-table
- In the note-table
These two first settings are multiplied, and the result says
how many cycles there shold be between each note. Normally
this value is about 5. To get this value, eigther write 1 in
the command table, and 5 in each line in the mensure-table, or
opposite.
It the AudioDriver reaches a speed-setting in the note-table,
then this is used
instead of
the setting in the mensure-table.
"zExamples
"z
Note: C-1 s02v20p00
Mensure: ... D-1 1030000 ...
Gives the note D-2 with the sound 12 (02 + 10). The volume will
be 20 * 30 = 600.
"zThe command-table
"z
The commands current avaliable are:
Play <start> <length>
Start at position <start> of the mensure-table, and play
<length> lines.
Stop
Stop playing.
Goto <destination>
Jumps to the position <destination> in the command-table.
Loop <destination> <t>
Jumps to the position <destination> in the command-table
(<t> - 1) times, then continue to the next line.
Note <note>
Transpose all the following music to <note>.
Dlay <delay> <--->
Change the delay between each note. The final delay will be
the product of this value and the value in the
measure-table.
LPFl <on/off>
Turn the lo-pass filter on or off. This will also turn the
power light on or off. The lo-pass filter filters out
frequencies above about 5 kHz, to avoid distortion sounds.
It will not work on the Amiga 1000. You can find more about
this in the Amiga Hardware Reference Manual.
When you load a new composition into memory, some values from
the previous composition may remain in the memory. Therefore, a
composition should always start with these commands:
Dlay xx Set the speed of the song - another
composition may have changed it.
LPFl On/Off You can not thrust that the filter always is
set to the condition you want.
Note xxx ALWAYS include this command in the start, in
case another composition has used the Note
command. If you do not need to transpose your
music, let x be "C-0".
wThe Sound Editor
w
Click on the sounds gadget to enter the Sound Editor. On this
page there are 3 tables:
Envelope - at the top
Sound - in the middle
Waveform - at the bottom
The sound-table is the main table here. Use the index-numbers
at the left side of this table when you spesify a sound in the
mensure- and note-table.
A sound is build up from the following:
Vibrators
Period settings
Volume settings
Waveform settings
The vibrators are used by the three others.
"zThe Envelope-table
"z
The vibrators needs a source wave. This waveform is formed in
the envelope-table. I will explain this by an example.
TiLev TiLev TiLev TiLev
00 01+40 04+08 08-10 00 01
04
There are 4 fields in each position of this table. The secound
field is the level of the wave at a spesific point. At position
00 the level is 40, and in position 2 the level is -10. The
first field of a position is the time it shall take before the
level of the same position is reached. If the table above is
used, the following sequence of events will happen:
Postition Event
00 "time" is ignored in the first field, but the
level is set to 40.
01 The level will decrease from 40 (the last level)
to 8 (the current level). The time before the
level reaches 8 is 4 (the current time)
multiplied with the speed of the vibrator (in
the sound-table).
02 The level decreases from 8 to -10. The time for
this event is (8 * speed).
03 When the time is set to 0, the AudioDriver will
jump to the position specified under "Lev". In
this case it will jump back to position 01.
01 The level will increase from -10 to 8.
...
"zVibrators
"z
There are 4 vibrators, and all can be used to control boht
period, volue and waveform. Each vibrator consist of the
following:
- The starting position in the envelope-table
- Speed
The 4 vibrators differs a bit from each other:
Vibrator 0:
This vibrator contains two starting positions in the
envelope-table. The first is used on key-on and the second
is used on key-off. This is mostly used to control the
volue.
Vibrator 1:
You can control the speed of this vibrator by vibrator 2.
The speed is calculated like this:
speed = offset + rate * vibrator2
If you want a constant speed of this vibrator, specify 00 in
the rate-field, and use the offset-field as a normal
speed-field.
Vibrator 2:
The only special about this, is that it can be used to
control the speed of the previous vibrator.
Vibrator 3:
The position in the envelope-table of this is not resetted
at each note, but only in the start of a mensure if there is
an upper-case note in the mensure-table.
"zPeriod settings
"z
The frequency will change along with the period. If you
increase the period, the frequency will decrease. The period
depends on the note that is played, and on the period settings.
The period settings uses 3 vibrators. Under the letters "xyz"
you can specify which of the 4 vibrators mentioned above shall
be used as vibrator x, vibrator y and vibrator z. If you for
example write 3 under "x", the last vibrator will be used as
vibrator x.
The value under the label "Ofx" is a constant value that will
be added to the period. The next field, "Rxy", is the rate of
the product vibrator x * vibrator y. If this is set to +00,
vibrator x and vibrator y will have no influence on the period.
The field under "Rz" is the rate of vibrator z. Like above,
this field can be set to +00 to ignore vibrator z.
Here is the whole calculation of the period:
period = noteperiod + Ofx + Rxy * vibx * viby + Rz * vibz
"zVolume settings
"z
The volume is calculated in a similar way as the period, but
here are only 2 vibrators used, vibrator v and vibrator w.
The calculation of the volume is:
volume = sequencvolume * (Ofv + Rv * vibv + Rw * vibw)
Where sequencevolume is the volume from the note-table and
mensure-table.
wWaveform
w
"zLoading Samples
"z
Before I explain different types of waveforms, you shold load
some samples into the memory. Select the sample-gadget. The
table at the top of the screen keeps a notice of the names of
the samples in the memory, and where they are placed. The last
line always indicates the free memory. To load a new sample,
place the cursor at this line and select "Read Sample" form the
drag-down menu.
If the cursor is placed on a sample when you load a new one,
the old sample will be removed, and the new sample will appair
at the bottom of the table. You can also remove a sample by
selecting "Remove Sample" form the drag-down menu.
"zTypes of waveforms
"z
The AudioDriver provides three types of waveforms:
Sampled sounds
Waveform-swapping
Real-time Waveform Generator
"zSampled sounds
"z
I will start with the simplest, the sampled sounds. This is
just backplaying of a pre-recorded instrument. When you have
loaded a sample as explained above, you must tell AudioDriver
how you want it to be played. Here are the commands that should
be placed in the waveform-table: (The lower-case letters s and
l represents hexadecimal digits.)
Sng ssssss llll
Play the waveform form position s to (
s
+
l
) in the
sample-table once.
Rep ssssss llll
Repeat the waveform from position s to (
s
+
l
) in the
sample-table.
Cnt ssssss llll
Play the waveform from position
s
to (
s
+
l
) in the
sample-table one time, and continue with the next waveform.
The next waveform have to be of the type "Sng" or "Rep".
"zWaveform-swapping
"z
A more flexible way of backplaying samples is a technique I
call waveform-swapping. By this method you can make samples
longer or shorter than they actually are. The samples will use
the same amount of time at all frequencies, and many will have
almost the same quality as before.
How this is done? The sample which is to be played is divided
into equal blocks. By one or two vibrators you can let the
AudioDriver swap between different blocks. If the vibrator
starts at 0 en increases with the rigth speed, you will hear
almost no difference between the two ways of backplaying the
sample.
One ssssss rrll t
Waveform-swapping with one vibrator.
s
is the start of the
sample and
l
is the length of each block.
t
is the vibrator
to use and
r
is the rate of it.
Two ssssss rrll tu
Like above, but here are two vibrator which are multiplied.
"zReal-time Waveform Generator
"z
The last source for the waveform, is the real-time waveform
generator. When using this method, the AudioDriver always plays
the contents of a buffer. The buffer is constantly written to,
so that the waveform changes.
Gen ____ll ____ __
Generate a waveform of the length
l
where 0 <
l
< 41.
Gen 00____ aabb tu
Pulse with the width (
a
* vibrator t +
b
* vibrator u)
Gen 01____ aabb tu
3-octave pulse. The rate of the lowest octave is (
a
*
vibrator t) and the rate of the highest octave is (
b
*
vibrator u).
Gen 02____ aabb tu
Ramp-up wave. The angle of the ramp depends on (
a
* vibrator
t +
b
* vibrator u)
The following commands uses samples as their sources. They are
followed by one command that says where the sample data lies.
This can have one of the types "Rep", "One" or "Two".
Gen 10____ ____ __
The next waveform is copied directly to the buffer.
Gen 11____ ____ __
The next waveform is added into the buffer.
Gen 12____ ____ __
The next waveform is multiplied into the buffer.
Gen 1F____ ____ __
Nothing is done with the buffer.
The commands starting with 2 uses two samples as their sources,
and combines these in different ways.
Gen 20____ aabb tu
The next 2 waveforms is mixed. The rate of the first
waveform is (
a
* vibrator t) and the rate of the secound
waveform is (
b
* vibrator u).
Gen 2x____ ____ __
The next two waveforms is combined by a function from the
following table:
x Function
1 +
2 *
3 binary AND
4 binary OR
5 binary EXCLUSIVE OR
6 The value from the first waveform is added to the index
in the sample-table.
Gen __f___ ____ __
Turn on a filter which is spesified
f
lines below.
wKey-functions
w
"zAll fields:
"zRETURN Insert one line. (Copies the current line.)
BACKSPACE Delete one line.
CRSR Keys Move cursor up, down, right or left.
SHIFT-UP One page up.
SHIFT-DOWN One page down.
SHIFT-LEFT One field left.
SHIFT-RIGHT One field right.
CTRL-UP Move to start of the current table.
CTRL-DOWN Move to end of the current table.
Del Move to previous column.
Help Move to next column.
BACKQUOTE Toggle between different functions for the
field.
F2..F5 Shift between the tables on the current screen.
See below.
SHIFT-F2..F5 Shift between the screens. See below.
------------------------------------------------
SHIFT-F2 SHIFT-F3 SHIFT-F4 SHIFT-F5
F2 Pref Command Sound Samplerange
F3 - Measure Envelope Sample
F4 - Note Waveform -
F5 - Arpeggio - -
------------------------------------------------
"zCommand-table:
"zF1 Play from current posistion.
SHIFT-F1 Stop playing.
"zMeasure-table and note-table:
"zESC Toggle between the measure-table and the
note-table. When you leave the measure-table,
the block-size will be set as if you press
RIGHTAMIGA-z.
"zNote fields:
"zz../ and q..] Notes.
a..' and 1..\ Halv Notes.
<note> Start a new note.
SHIFT-<note> Continue key-on. (The note continues.)
CTRL-<note> The note values of all notes is changed, so that
<note> gets the value 0.
SPACE Key-off. (No new note is played.)
TAB Toggle between upper and lower case notes.
F9 Shift keyboard one octave down.
F10 Shift keyboard one octave up.
SHIFT-F9 Shift keyboard one note down.
SHIFT-F10 Shift keyboard one note up.
CTRL-F9 Shift lower keyboard one octave down.
CTRL-F10 Shift lower keyboard one octave up.
CTRL-SHIFT-F9 Shift lower keyboard one note down.
CTRL-SHIFT-F10 Shift lower keyboard one note up.
Figures:
waveform-swapping
pulse-width, pulse-octaver, ramp-up